/*
 * Copyright (c) 2011, Nikolaus Moll
 * All rights reserved.
 * 
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 * * Redistributions of source code must retain the above copyright
 *   notice, this list of conditions and the following disclaimer.
 * * Redistributions in binary form must reproduce the above copyright
 *   notice, this list of conditions and the following disclaimer in the
 *   documentation and/or other materials provided with the distribution.
 * * Neither the name of the gradecalculator.net nor the
 *   names of its contributors may be used to endorse or promote products
 *   derived from this software without specific prior written permission.
 * 
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 */
package net.gradecalculator.gui.qt.common.dialogs;

import java.io.File;

import com.trolltech.qt.gui.QComboBox;
import com.trolltech.qt.gui.QFileDialog;
import com.trolltech.qt.gui.QGridLayout;
import com.trolltech.qt.gui.QLabel;
import com.trolltech.qt.gui.QMessageBox;
import com.trolltech.qt.gui.QWidget;

public final class CommonDialogs
{
    private static String lastDirectory = System.getenv("user.dir");

    private CommonDialogs()
    {}

    public enum ChangedDialogResult {
        CONTINUE, CANCEL

    };

    public static QMessageBox.StandardButton getFileChangedAction(final QWidget parent)
    {
        final QMessageBox.StandardButtons buttons = new QMessageBox.StandardButtons();
        buttons.set(QMessageBox.StandardButton.Save);
        buttons.set(QMessageBox.StandardButton.Discard);
        buttons.set(QMessageBox.StandardButton.Cancel);

        final String title = parent.tr("Grade Calculator");
        final String message = parent.tr("File has been modified.\n" + "Do you want to save your changes?");

        return QMessageBox.warning(parent, title, message, buttons, QMessageBox.StandardButton.Save);
    }

    public static String getSaveAsFilename(final QWidget parent, final String title, final String filetype,
            final String extension)
    {
        final String filter = parent.tr(filetype) + " (*." + extension + ")";
        final String result = QFileDialog.getSaveFileName(parent, parent.tr(title), lastDirectory,
                new QFileDialog.Filter(filter));

        if ((result == null) || (result.equals(""))) {
            return null;
        }

        final File file = new File(result);
        lastDirectory = file.getParentFile().getAbsolutePath();

        return result;
    }

    public static String getOpenFilename(final QWidget parent, final String title, final String filetype,
            final String extension)
    {
    	final QFileDialog fileDialog = new QFileDialog(parent, parent.tr(title));
    	final QComboBox plugins = new QComboBox();
    	plugins.addItem("STUX neu");

    	final QGridLayout layout = (QGridLayout)fileDialog.layout();

   		layout.addWidget(new QLabel("Account type:"));
   		layout.addWidget(plugins);

    	//fd->setLayout(gridbox);
    	fileDialog.exec();
    	
    	
    	
        final String filter = parent.tr(filetype) + " (*." + extension + ")";
        final String result = QFileDialog.getOpenFileName(parent, parent.tr(title), lastDirectory,
                new QFileDialog.Filter(filter));

        if ((result == null) || (result.equals(""))) {
            return null;
        }

        final File file = new File(result);
        lastDirectory = file.getParentFile().getAbsolutePath();

        return result;
    }

}
